{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f1532b31-4caf-4c95-be15-24e2a4a1ec44",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 1 2 3]\n",
      " [4 5 6 7]]\n",
      "tensor([[0, 1, 2, 3],\n",
      "        [4, 5, 6, 7]])\n",
      "[[0 1 2 3]\n",
      " [4 5 6 7]]\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "np_data = np.arange(8).reshape((2,4))\n",
    "torch_data = torch.from_numpy(np_data)\n",
    "print(np_data)\n",
    "print(torch_data)\n",
    "np_data2 = torch_data.numpy()\n",
    "print(np_data2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fa5cbc25-25a3-4158-8c3f-fa64a07e2032",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.1.2\n",
      "True\n",
      "1\n"
     ]
    }
   ],
   "source": [
    "# 打印PyTorch版本\n",
    "print(torch.__version__)\n",
    "\n",
    "# 检查CUDA是否可用\n",
    "print(torch.cuda.is_available())\n",
    "print(torch.cuda.device_count())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a2e5e2b4-0468-470e-9179-ba6560d6a5c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[-0.5308,  0.2122, -0.9539, -0.9901, -1.1044],\n",
      "        [ 0.7838,  1.6295, -1.2862,  0.7765,  0.1949],\n",
      "        [ 0.9485, -0.0072,  0.5840,  1.2526, -0.5732],\n",
      "        [ 0.8848,  0.4287, -1.1671, -0.4834, -0.6124],\n",
      "        [ 0.4204,  0.9850, -2.4743, -1.0963, -1.0116],\n",
      "        [ 1.0536,  0.0904,  0.2422,  0.3107, -0.6033],\n",
      "        [-0.8323, -1.6020, -0.6715, -1.8943,  0.6963],\n",
      "        [-0.8812,  0.4703,  0.0156,  0.4629,  0.1897],\n",
      "        [-0.0719, -1.3981,  0.1824,  0.6713,  0.5748],\n",
      "        [-0.1985,  1.7910,  1.4956, -0.9553, -0.2229]])\n",
      "None\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "#Vaiable\n",
    "from torch.autograd import Variable \n",
    "import torch\n",
    "x_tensor = torch.randn(10, 5)\n",
    "x = Variable(x_tensor, requires_grad=True)\n",
    "\n",
    "print(x.data)\n",
    "print(x.grad)\n",
    "print(x.grad_fn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "f599a02b-bc8a-4557-a304-27827969e1a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1Clxe2hoKO7du4fLly+jfv36D33dy8sLBQUFyMjI0OsVSEtLg5eXV2ViP1JFj+vatWto3749WrdujRUrVlT4/UJDQwGIHoW6detW+PWPy83NDXZ2dg9dGVzWz9jLy6tC+8tp+PDh+Pnnn7Fnz54K/1Vvb2+PFi1aICkpyUjpKsfV1RX16tUrNZ85fU7Wju2owHZUmf8/2Y6aweckd7Vsyb766ivJ1tZWunnzZolfL7ow4JtvvtFtO3PmjOIuDLhy5Yr01FNPSW+99ZZ07969x/oef/75pwRA+uuvvwyc7tFCQkKk4cOH654XFhZKtWrVKvPCgJdeeklvW1hYmKIGnGu1WmnYsGGSj4+PdO7cucf6Hvfu3ZPq168vjR492sDpDCM7O1uqXr26tHDhwhK/bg6fE1Ue29FibEcNi+2oeXxOksTZAAxm37590vz586Vjx45JFy5ckL766ivJ3d1d6tWrl26fK1euSPXr15cOHDig2zZkyBDJz89P+v3336XDhw9LYWFhUlhYmByHUKIrV65ITz75pNShQwfpypUretNh3L/P/ceVlJQkTZ06VTp8+LB06dIl6YcffpDq1KkjPf/887Icw/r16yW1Wi3FxcVJp06dkgYNGiS5urrqphvp2bOnNGHCBN3+e/fulapUqSLNmTNHOn36tBQTE6O4qTyGDh0qubi4SLt27dL7TPLy8nT7PHhcU6ZM0U2dk5iYKL311luSg4ODdPLkSTkO4SFjxoyRdu3aJV26dEnau3evFB4eLrm5uUnp6emSJJnn50QVw3aU7agpsR01j89JklisGkxiYqIUGhoqubi4SA4ODlKDBg2k6dOn642zunTpkgRA2rlzp27b7du3pXfeeUeqXr265OjoKL366qt6DZjc1qxZU+pYrCIPHldycrL0/PPPSzVq1JDUarX05JNPSu+9955s8wNKkiQtWrRI8vPzk1QqlRQSEiLt379f97W2bdtKvXv31tt/48aNUr169SSVSiU1atRI2rJli4kTl620z2TNmjW6fR48rlGjRul+Bp6enlLnzp2lI0eOmD58KSIjIyVvb29JpVJJtWrVkiIjI/XG5pnj50QVw3aU7agpsR0VlP45SZIk2UiSJBl/sAERERERUcVxnlUiIiIiUiwWq0RERESkWCxWiYiIiEixWKwSERERkWKxWCUiIiIixWKxSkRE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DS9p1AhwdZU1ChERET3MqD2rKpUKwcHBiL/vohWtVov4+HiEhYWV+JqwsDC9/QFgx44dpe5PVCkcAkBERKRoRu1ZBYCoqCj07t0bLVu2REhICBYsWIDc3Fz07dsXANCrVy/UqlULsbGxAICRI0eibdu2mDt3Lrp06YL169fj8OHDWLFihbGjkjUqKlZ5cRUREZEiGb1YjYyMxPXr1zF58mRoNBo0b94c27Zt011ElZycDFvb4g7e1q1bY926dZg4cSLef/99PPXUU/j+++/RuHFjY0cla5OfDxw+LNZZrBIRESmS0edZNTXOf0jllpAgilR3d3GhlY2N3InITLCdISIyHbOfDYDosd0/BICFKhERkSKxWCXrxfGqREREisdilayTJPHOVURERGaAxSpZp0uXxDhVe3ugZUu50xAREVEpWKySdSoaAhAcDDg4yJuFiIiISsVilawTx6sSERGZBRarZJ1YrBIREZkFFqtkfbKygOPHxTqLVSIiIkVjsUrW58ABQKsFAgMBb2+50xAREVEZWKyS9eEQACIiIrPBYpWsD4tVIiIis8FilaxLYSGQkCDW27SRNwsRERE9EotVsi4nTwLZ2UC1akDjxnKnISIiokdgsUrW5c8/xeMzzwB2dvJmISIiokdisUrWZc8e8fj88/LmICIionJhsUrWQ5KAP/4Q6yxWiYiIzAKLVbIeFy8C164BKhUQEiJ3GiIiIioHFqtkPYqGALRqBVStKm8WIiIiKhcWq2Q9OF6ViIjI7LBYJevBYpWIiMjssFgl63DlihizamvLO1cRERGZERarZB2KZgFo0QJwdpY3CxEREZUbi1WyDhwCQEREZJZYrJJ1KCpWn3tO3hxERERUISxWyfLduAGcOiXWn31W3ixERERUISxWyfLt3CkeGzUC3N3lzUJEREQVwmKVLF98vHjs0EHeHERERFRhLFbJ8rFYJSIiMlssVsmyJScDSUliftW2beVOQ0RERBXEYpUsW1GvaqtWgIuLvFmIiIiowliskmUrKlbDw+XNQURERI+FxSpZLknieFUiIiIzx2KVLNfp04BGAzg4AGFhcqchIiKix8BilSxXUa/qs8+KgpWIiIjMDotVsly//ioeOQSAiIjIbLFYJct05w7w++9ivVMnebMQERHRY2OxSpZpzx4gLw/w8QGaNpU7DRERET0moxarN2/e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n0ZQUBCioqJ025o2bQqVSoXBgwcjNjZWcfcyr8hxFbl69Sr+85//4M0338TAgQPLfO2gQYN0602aNIG3tzc6dOiACxcuoG7dupULT3qGDRuGEydOlDm+EwDCwsIQFhame966dWs0aNAAy5cvx7Rp04wd85E6deqkW2/atClCQ0Ph7++PjRs3on///jImIyIiObFYfYQxY8agT58+Ze5Tp06dEreHhobi3r17uHz5MurXr//Q1728vFBQUICMjAy93tW0tDR4eXlVJvYjVfS4rl27hvbt26N169ZYsWJFhd8vNDQUgOiZNWWx6ubmBjs7u4dmWCjrZ+zl5VWh/eU0fPhw/Pzzz9izZ0+Fe0ft7e3RokULJCUlGSld5bi6uqJevXql5jOnz4mIiB4fi9VHcHd3h7u7+2O99tixY7C1tYWHh0eJXw8ODoa9vT3i4+Px+uuvAwDOnj2L5ORkvR4wY6jIcV29ehXt27dHcHAw1qxZA1vbig91PnbsGADA29u7wq+tDJVKheDgYMTHx6Nr164AxGnz+Ph4DB8+vMTXhIWFIT4+HqNGjdJt27Fjh9E/k4qQJAkjRozA5s2bsWvXLgQGBlb4exQWFuL48ePo3LmzERJWXk5ODi5cuICePXuW+HVz+JyIiMgA5L7Cy1Ls27dPmj9/vnTs2DHpwoUL0ldffSW5u7tLvXr10u1z5coVqX79+tKBAwd024YMGSL5+flJv//+u3T48GEpLCxMCgsLk+MQSnTlyhXpySeflDp06CBduXJFSk1N1S3373P/cSUlJUlTp06VDh8+LF26dEn64YcfpDp16kjPP/+8LMewfv16Sa1WS3FxcdKpU6ekQYMGSa6urpJGo5EkSZJ69uwpTZgwQbf/3r17pSpVqkhz5syRTp8+LcXExEj29vbS8ePHZclfkqFDh0ouLi7Srl279D6TvLw83T4PHteUKVOk7du3SxcuXJASExOlt956S3JwcJBOnjwpxyE8ZMyYMdKuXbukS5cuSXv37pXCw8MlNzc3KT09XZIk8/yciIio8lisGkhiYqIUGhoqubi4SA4ODlKDBg2k6dOnS3fu3NHtc+nSJQmAtHPnTt2227dvS++8845UvXp1ydHRUXr11Vf1CkG5rVmzRgJQ4lLkweNKTk6Wnn/+ealGjRqSWq2WnnzySem9996TMjMzZToKSVq0aJHk5+cnqVQqKSQkRNq/f7/ua23btpV69+6tt//GjRulevXqSSqVSmrUqJG0ZcsWEycuW2mfyZo1a3T7PHhco0aN0v0MPD09pc6dO0tHjhwxffhSREZGSt7e3pJKpZJq1aolRUZGSklJSbqvm+PnRERElWcjSZIkR48uEREREdGjcJ5VIiIiIlIsFqtEREREpFgsVomIiIhIsVisEhEREZFisVglIiIiIsVisUpEREREisVilYiIiIgUi8UqERERESkWi1UiIiIiUiwWq0RERESkWCxWiYiIiEix/h+kNwEstekHJAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#激活函数\n",
    "import torch\n",
    "from torch.autograd import Variable \n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "tensor = torch.linspace(-6,6,2000)\n",
    "tensor = Variable(tensor)\n",
    "np_data = tensor.numpy()\n",
    "\n",
    "#定义激活函数\n",
    "y_relu = torch.relu(tensor).data.numpy()\n",
    "y_sigmoid = torch.sigmoid(tensor).data.numpy()\n",
    "y_tanh = torch.tanh(tensor).data.numpy()\n",
    "\n",
    "plt.figure(1, figsize=(8,6))\n",
    "plt.subplot(221)\n",
    "plt.plot(np_data, y_relu, c='red', label='relu')\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(222)\n",
    "plt.plot(np_data, y_sigmoid, c='red', label='sigmoid')\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(223)\n",
    "plt.plot(np_data, y_tanh, c='red', label='tanh')\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "219172ac-2247-4b8b-a986-26d0e97f68be",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py39_torch_212",
   "language": "python",
   "name": "py39_torch_212"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
